Storage is widely used for storing data associated with computer systems. Storage may be primary storage used for routinely accessing information, or may be secondary storage providing redundant or archival storage to permit data recovery in the case of loss of data in the primary storage system. Examples of primary storage include systems referred to as “production” or “working” data storage systems. Examples of secondary storage include systems referred to as “backup” systems. Storage may be used, for example, for storing executable program code (commonly referred to as computer “programs” or “applications”) and/or data input to and generated by such program code.
Storage of data is conventionally performed by storage systems including one or more storage devices arranged into one or more storage volumes. Storage devices may be, for example, disk devices that store data on one or more types of media, including magnetic, optical, or other type of media used for storing data. More particularly, disk devices may be arranged into one or more data storage areas referred to in the art as “volumes” that are capable of being accessed by one or more computer systems referred to as “hosts.” A volume is commonly defined as a virtual storage area into which a file system, database management system, or other system or process places data. A volume may include a single partition of a disk device or multiple partitions located on one or more physical storage devices. Generally, volumes are managed by the storage systems which are computer systems that provide storage-related services to hosts. The hosts communicate with a storage system through a communication medium such as a network. Typical networks used to transfer data between hosts and storage systems include Fibre Channel, SCSI, Ethernet, Gigabit Ethernet, and other types of communication networks. Data is transferred between systems using one or more communication protocols as is well-known in the art.
Many storage systems enable data to be copied from one or more of these storage devices to another device to allow data to be restored in case of failure of a disk device, deletion of data, or other reason. Some storage systems provide the ability to copy data to secondary storage for archival purposes such as backups, while other storage systems maintain copies of data in real time.
This copying of data in real time from one storage area to another is referred to in the art as “mirroring” data. Generally, a standard volume or disk device is defined as the primary storage area for data, and a “mirror volume” or “mirror device” is defined as the secondary storage area. The term “mirror” is used generally hereinafter to refer to a mirror volume or mirror device. A mirror may be a logical construct such as a logical volume comprising an array of one or more disks, or the mirror may be a physical device such as a disk. A mirror is typically used for redundancy, in that a controller of a storage system having a standard volume and a mirror accesses media of either the standard volume or the mirror when a read failure occurs. More particularly, in the case of a read failure caused by a defect on the surface of one of either the standard volume or mirror disk drives, a crash of one of these drives, or other problem, the controller simply reads the intact version of the file from the intact drive. If the read failure is caused by a media defect, the controller can automatically read the data from the copy of the file on the other drive and write it to a new, undamaged area on the drive on which the defect occurred.
For example, a mirror associated with a standard volume is synchronized by the storage system to the standard volume. That is, data residing on the standard volume is copied to the mirror, and updates to data residing on the standard volume are also performed on the mirror. A mirror that is synchronized to a standard volume is said to be in a “mirrored” state. A mirror which is no longer being synchronized with the standard volume is said to be in a “split” state.
Mirrors may also be used to perform backups, reports, and other operations requiring availability of the standard volume. More particularly, because certain operations require locking of data, affect read/write performance, or otherwise affect normal access to the data by hosts, a mirror volume may be used to provide data for these certain operations without affecting performance to the standard volume. Typically, a mirror is first synchronized to the standard volume so that data may be copied to the mirror, and then the mirror is placed in a split state. Thereafter, the mirror functions as a snapshot of the standard volume at the time the mirror was split. The snapshot may be then used to perform a backup, such as to another secondary storage area, reports may be generated based on the data stored in the snapshot, or the snapshot may serve as an operational storage area to offload read requests from standard volumes, data mining operations, and other tasks.
The snapshot may also be used to restore data to the standard volume. For instance, the snapshot may be used to perform a full or an incremental restore of data to the standard volume in the case of data deletion, failure of one or more disk devices of the standard volume, read failure, or other reason.
In any case, data from the snapshot is restored to the standard volume, and the snapshot is resynchronized with the standard volume. Resynchronization of the snapshot to the standard volume involves copying of updated data from the standard volume to the snapshot.